//package com.example.chatweb.service.impl;
//
//import com.example.chatweb.config.JSchAutoConfiguration;
//import com.example.chatweb.config.JschProperties;
//import com.example.chatweb.service.FileService;
//import com.example.chatweb.utils.HttpUtil;
//import com.example.chatweb.utils.MyExceptionHandler;
//import com.jcraft.jsch.ChannelSftp;
//import com.jcraft.jsch.JSchException;
//import com.jcraft.jsch.Session;
//import com.jcraft.jsch.SftpException;
//import java.io.InputStream;
//import javax.annotation.Resource;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import org.springframework.web.multipart.MultipartFile;
//
///**
// * <h3>chat-web</h3>
// *
// * @author HuangJiayu
// * @description <p>文件服务实现类</p>
// * @date 2024-04-15 15:22
// **/
//@Service
//@Slf4j
//public class FileServiceImpl implements FileService {
//
//	@Resource
//	private JSchAutoConfiguration jSchAutoConfiguration;
//	@Resource
//	private JschProperties jschProperties;
//
//	@Autowired
//	private HttpUtil httpUtil;
//
//	/**
//	 * 描述: 利用SSH上传文件
//	 *
//	 * @param inputStream 输入流
//	 * @param filePath    文件路径
//	 * @param fileName    文件名
//	 * @return 路径
//	 */
//	@Override
//	public String uploadFile(InputStream inputStream, String filePath, String fileName) {
//		try {
//			ChannelSftp sftp = this.getChannelSftp();
//			try{
//				sftp.lstat(jschProperties.getPath() + "/" + filePath);
//			}catch (SftpException e){
//				sftp.mkdir(jschProperties.getPath() + "/" + filePath);//创建文件及新加的
//			}
//			// 上传的文件路径
//			String path = jschProperties.getPath() + "/" + filePath + "/" + fileName;
//			// 上传文件
//			sftp.put(inputStream, path);
//
//			sftp.quit();
//
//			sftp.exit();
//		} catch (JSchException | SftpException e) {
//			log.error("上传文件失败", e);
//			throw new MyExceptionHandler("上传文件失败");
//		}
//		// 返回图片的浏览路径
//		return jschProperties.getUrl() + filePath + "/" + fileName;
//	}
//
//	/**
//	 * 描述: 利用SSH删除文件
//	 *
//	 * @param filePath 文件路径
//	 * @param fileName 文件名
//	 * @return 是否成功
//	 */
//	@Override
//	public boolean deleteFile(String filePath, String fileName) {
//		try {
//			ChannelSftp sftp = this.getChannelSftp();
//			sftp.rm(jschProperties.getPath() + "/" + filePath + "/" + fileName);
//			sftp.quit();
//			sftp.exit();
//		} catch (JSchException | SftpException e) {
//			log.error("删除文件错误", e);
//			throw new MyExceptionHandler("删除文件失败");
//		}
//		return true;
//	}
//
//	/**
//	 * 描述: 利用SSH下载文件
//	 *
//	 * @param filePath 文件路径
//	 * @param fileName 文件名
//	 */
//
//	@Override
//	public InputStream downloadFileSsh(String filePath, String fileName) {
//		InputStream inputStream = null;
//		try {
//			ChannelSftp sftp = this.getChannelSftp();
//			inputStream = sftp.get(jschProperties.getPath() + "/" + filePath + "/" + fileName);
//			sftp.quit();
//			sftp.exit();
//		} catch (JSchException | SftpException e) {
//			log.error("SSH下载文件错误", e);
//			throw new MyExceptionHandler("SSH下载文件失败");
//		}
//		return inputStream;
//	}
//
//	/**
//	 * 描述: 利用HTTP请求下载文件
//	 *
//	 * @param url 文件路径
//	 */
//
//	@Override
//	public MultipartFile downloadFileHttp(String url) {
//		return null;
//	}
//
//	/**
//	 * 获取安全文件传输协议类
//	 *
//	 * @return 安全文件传输协议类
//	 * @throws JSchException JSch链接异常
//	 */
//	private ChannelSftp getChannelSftp() throws JSchException {
//		Session session = jSchAutoConfiguration.getSession();
//		// 安全文件传输协议
//		ChannelSftp sftp = (ChannelSftp) session.openChannel("sftp");
//		sftp.connect();
//		return sftp;
//	}
//}
